Esse System está na sua pasta mods certo? Se for então o erro não é ele, porque o erro no Distro se trata de um CreatureScripts. Oque você colocou de novo no CreatureScripts? Seja oque for nos passe para resolvermos.
info
Grupo: Herói
Registrado: 14/12/10
Posts: 3.6k
Reputação: +846
Gênero: Masculino

info
Grupo: Lorde
Registrado: 05/06/12
Posts: 2.2k
Reputação: +215
Gênero: Masculino

Não testei, so tirei um end mas n deu bug, testa ae:
function getItemReflectPercent(itemid)
return getItemAttribute(itemid, "reflectPercent")
end
function doPlayerAddReflectedItem(cid, itemid, percent)
local item = doPlayerAddItem(cid, itemid)
doItemSetAttribute(item, "description", "[Reflect: "..percent.."%]")
doItemSetAttribute(item, "reflectPercent", percent)
return true
end
info
Grupo: Visconde
Registrado: 21/09/10
Posts: 319
Reputação: +27
Char no Tibia: lest sarif

Quando tiro o END , apareceu 1 porrada de BUGS
Coloque as duas funções do script no seu arquivo 050-function.lua em data/lib
info
Grupo: Visconde
Registrado: 21/09/10
Posts: 319
Reputação: +27
Char no Tibia: lest sarif

Essa função está errada
function getItemReflectPercent(itemid) return getItemAttribute(itemid, "reflectPercent") end
Como ela está, ela retorna apenas atributos únicos de itens, e caso eles não existam, retorna nil.
Fiz algumas modificações nela e no script:
function getItemReflectPercent(item) local reflectPercent = getItemAttribute(item.uid) or getItemInfo(item.itemid).reflectPercent return reflectPercent or 0 end
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Reflect System" version="0.1" author="Aluccard" contact="" enabled="yes">
<description>
Script que funciona para refletir danos para as creatures que o atacar.
</description>
<event type="login" name="regReflectDamage" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid,"ReflectDamage")
return true
end
]]></event>
<event type="statschange" name="ReflectDamage" event="script"><![CDATA[
local slotPos = {CONST_SLOT_NECKLACE, CONST_SLOT_FEET, CONST_SLOT_HEAD}
function onStatsChange(cid, attacker, type, combat, value)
local reflectPercent = 0
local dmg = value
local playerPos = getCreaturePosition(cid)
local attackerPos = getCreaturePosition(attacker)
for i = 1, #slotPos do
if getPlayerSlotItem(cid, slotPos[i]).uid > 1 then
if getItemReflectPercent(getPlayerSlotItem(cid, slotPos[i])) then
reflectPercent = reflectPercent + getItemReflectPercent(getPlayerSlotItem(cid, slotPos[i]))
end
end
end
if reflectPercent > 0 then
dmg = math.ceil(-value*((100-reflectPercent)/100))
if (dmg < 0) then
doCreatureAddHealth(cid, dmg)
doSendAnimatedText(playerPos, -dmg, COLOR_RED)
doSendMagicEffect(playerPos, 0)
else
doSendMagicEffect(playerPos, 3)
end
dmg = math.ceil(-value*(reflectPercent/100))
if (dmg < 0) then
doCreatureAddHealth(attacker, dmg)
doSendAnimatedText(attackerPos, -dmg, COLOR_RED)
doSendDistanceShoot(playerPos, attackerPos, CONST_ANI_SMALLHOLY)
end
else
return true
end
end]]></event>
</mod>
Não estou certo se irá funcionar.
Abraços.
Editado Dezembro 11 por Oneshot
info
Grupo: Visconde
Registrado: 21/09/10
Posts: 319
Reputação: +27
Char no Tibia: lest sarif

É só agora notei que seu erro tem nada a ver com o que eu fiz. No caso o servidor acusa que a função não existe.
Vou tentar criar um sistema parecido sem usar mods, pois eu odeio eles.
Abraços.
info
Grupo: Visconde
Registrado: 21/09/10
Posts: 319
Reputação: +27
Char no Tibia: lest sarif

Okay , voce vai tentar criar agoora?
Não agora que estou um tanto ocupado, mas se você quiser, você pode criar itens que refletem coisas pelo items.xml sem precisar de scripts secundários.
Por exemplo, vou pegar a magic plate armor, de ID 2472.
<item id="2472" article="a" name="magic plate armor"> <attribute key="description" value="An enchanted gem glows on the plate armor." /> <attribute key="weight" value="8500" /> <attribute key="armor" value="17" /> <attribute key="slotType" value="body" /> </item>
Supondo que eu quero que ela reflita 10% de todos os tipos de dano, faço isso:
<item id="2472" article="a" name="magic plate armor">
<attribute key="description" value="An enchanted gem glows on the plate armor." />
<attribute key="weight" value="8500" />
<attribute key="armor" value="17" />
<attribute key="reflectpercentall" value="10"/>
<attribute key="reflectchanceall" value="100"/>
<attribute key="slotType" value="body" />
</item>
Assim ela terá 100% de chance de refletir 10% de todos os tipos de dano.
Lembrando que só funciona se estiver registrado no movements.xml.
Abraços.
Editado Dezembro 11 por Oneshot
info
Grupo: Visconde
Registrado: 21/09/10
Posts: 319
Reputação: +27
Char no Tibia: lest sarif

E como eu faço para outro item adicione isso ,? e ir acumulado e pah?
Não é possível, esses tipos de atributos só podem ser configurados no items.xml,não é possível criar um item que modifique eles. Só criando um atributo falso e um script que se baseie nele, como o Aluccard fez.
Mas se você usar vários itens com reflexão, a taxa acumula sim.
Editado Dezembro 11 por Oneshot
info
Grupo: Visconde
Registrado: 21/09/10
Posts: 319
Reputação: +27
Char no Tibia: lest sarif

tipo ,
doItemSetAttribute(item2.uid, "reflectallpercent", 3)





info
Grupo: Visconde
Registrado: 21/09/10
Posts: 319
Reputação: +27
Char no Tibia: lest sarif
Eu peguei esse script de reflect damage aki do Aluccard , porém ele fica dando error . e a funçao de adicionar o reflect no ITEM não está funcionando ;
Script :
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Reflect System" version="0.1" author="Aluccard" contact="" enabled="yes">
<description>
Script que funciona para refletir danos para as creatures que o atacar.
</description>
<event type="login" name="regReflectDamage" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid,"ReflectDamage")
return true
end
]]></event>
<event type="statschange" name="ReflectDamage" event="script"><![CDATA[
local slotPos = {CONST_SLOT_NECKLACE, CONST_SLOT_FEET, CONST_SLOT_HEAD}
function onStatsChange(cid, attacker, type, combat, value)
local reflectPercent = 0
local dmg = value
local playerPos = getCreaturePosition(cid)
local attackerPos = getCreaturePosition(attacker)
for i = 1, #slotPos do
if getPlayerSlotItem(cid, slotPos).uid > 1 then
if getItemReflectPercent(getPlayerSlotItem(cid, slotPos).uid) then
reflectPercent = reflectPercent + getItemReflectPercent(getPlayerSlotItem(cid, slotPos).uid)
end
end
end
if reflectPercent > 0 then
dmg = math.ceil(-value*((100-reflectPercent)/100))
if (dmg < 0) then
doCreatureAddHealth(cid, dmg)
doSendAnimatedText(playerPos, -dmg, COLOR_RED)
doSendMagicEffect(playerPos, 0)
else
doSendMagicEffect(playerPos, 3)
end
dmg = math.ceil(-value*(reflectPercent/100))
if (dmg < 0) then
doCreatureAddHealth(attacker, dmg)
doSendAnimatedText(attackerPos, -dmg, COLOR_RED)
doSendDistanceShoot(playerPos, attackerPos, CONST_ANI_SMALLHOLY)
end
else
return true
end
end]]></event>
</mod>
Funão de Adicionar item com Reflect
Agora o error :